Keyboard integrated with trackpad

ABSTRACT

An apparatus includes a processor and a keyboard having multiple, separately moveable keys. The keyboard is configured to function as both a keyboard and a trackpad.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No.61/387,290, filed Sep. 28, 2010, entitled “Keyboard Integrated WithTrackpad,” which is hereby incorporated by reference in its entirety.

TECHNICAL FIELD

This description relates to acquiring user input for computing devices.

BACKGROUND

Computing devices typically use user input to perform desired computingtasks. User input can be supplied in various forms. Typically, userinput comes either in the form of characters such as, for example,letters, numbers or other characters entered by typing on a keyboard, orin the form of touch input gestures such as, for example, scrollingcursor movements, clicks and other gestures entered by touching atrackpad, moving a mouse, or interacting with another touch- ormotion-sensitive device or area.

Computing devices often include at least two distinct means of gatheringthese two primary forms of user input: For example, a portable computermay include both a keyboard and a trackpad, in addition to its display,processor and other hardware. The keyboard is configured for characterentry and to perform shortcut commands via keystroke. The trackpad isconfigured to control cursor movement, and for scrolling, selectingitems, and inputting other control gestures. Other touch devices, suchas an external mouse, can in some cases be connected to the computer toduplicate or to supplement trackpad function; however, it may be typicalto interact with portable computers primarily via the included trackpad.

Computers, particularly portable computing devices, have decreaseddramatically in size in recent years. As such, space is at a premium andefficient allocation of space on device surfaces is increasinglyimportant.

To operate software on a portable computer, a user generally interactswith both the keyboard and the trackpad. Normal typing on the keyboardtypically occupies both of the user's hands, and using the trackpadrequires the use of at least one hand.

The keyboard includes a plurality of keys, representing letters (e.g.,Q, W, E, R, T, Y), numbers (e.g., 1, 2, 3), characters and symbols(e.g., Space, #, $, %) and functions (e.g. Ctrl, Esc, Shift). Thespacebar key is typically positioned at the bottom center of thekeyboard area, and its normal function during typing is to insert ablank space character, for example, to delineate boundaries betweenwords.

The trackpad is a touch-sensitive surface on which the user can enterinput. For example, depending on the computing context, the user may tapone or more fingertips on the surface of the trackpad, or place one ormore fingertips on the surface and drag them in a particular pattern.The trackpad also may have separate buttons duplicating the clickablebuttons on a mouse, or it may be clickable anywhere on its surface, orboth. Other names for the trackpad include, for example, the touchpad,the track pad, and the touch pad.

Many computing applications may require the user to use both thekeyboard and the trackpad, often switching rapidly between them. Forexample, in a word processing application, the user may type to entertext using the keyboard, and then wish to insert text into an earlierpassage in the document. Using the trackpad, the user could scroll thecursor to the desired location in the document and click to position thecursor. The user could then switch to the keyboard and type the desiredtext, before scrolling back to the original position using the trackpad,clicking, and continuing to type. Such parallel use of trackpad andkeyboard is common in many computing applications, such as, for example,web browsing, spreadsheets, word processing, e-mail programs,presentation managers, and photo and video editing software.

SUMMARY

In one general aspect, an apparatus includes a processor and a keyboardhaving a plurality of separately moveable keys. The keyboard isconfigured to function as both a keyboard and a trackpad.

Implementations may include one or more of the following features. Forexample, the keyboard may be configured to detect touch gestures made onor near a surface of the keyboard and the processor may be configured toprocess the touch gestures into one or more actions. The keyboard mayinclude one or more touch sensors configured to detect touch gesturesmade on or near a surface of the keyboard and the processor may beconfigured to process the touch gestures detected by the touch sensorsinto one or more actions. In one implementation, the touch sensor mayinclude a plurality of individual touch-sensitive conduits arrangedacross each of the separately movable keys.

The keyboard may include a separate sensor array configured to detecttouch gestures made on or near a surface of the keyboard and theprocessor may be configured to process the touch gestures detected bythe separate sensor array into one or more actions. The keyboard may beconfigured to detect touch gestures made on or near a surface of thekeyboard and the processor may be configured to classify the touchgestures between a typing gesture, a click gesture and a trackinggesture. The separately moveable keys may be individual keys. Theindividual keys may be arranged such that each of the keys is anapproximately planar surface arranged together to cover a substantialportion of a key support. The individual keys may each include a keysurface, a touch-sensor layer and a support. The touch-sensor layer mayinclude a capacitive surface, which may include multiple individualtouch-sensitive conduits arranged across each individual key.

The apparatus may include a spring mechanism for each separately movablekey. The apparatus may include a keystroke sensor for each separatelymovable key. The apparatus may include a force sensor for eachseparately movable key.

In another general aspect, a method includes executing instructionsrecorded on a non-transitory computer-readable storage media using atleast one processor. The method includes obtaining an input to akeyboard, where the keyboard includes a plurality of separately movablekeys and the keyboard is configured to function as both a keyboard and atrackpad. The method includes determining a context of the keyboardinput and characterizing the keyboard input as one of a typing gesture,a click gesture or a tracking gesture.

Implementations may include one or more of the following features. Forexample, determining the context of the keyboard input may includedetermining whether the keyboard input included input to one or morethan one key. Determining the context of the keyboard input may includedetermining whether the keyboard input was a tapping movement or asliding movement. Determining whether the keyboard input was a tappingmovement or a sliding movement may include determining whether thetapping movement was a typing gesture or a click gesture. Determiningthe context of the keyboard input may include determining whether thekeyboard input activated a sensor in one of the separately moveablekeys. Determining the context of the keyboard input may includedetermining an application context of the keyboard input. Determiningthe context of the keyboard input may include determining a text entrycontext of the keyboard input. Determining the context of the keyboardinput may include determining a duration of the keyboard input.

In another general aspect, a recordable storage medium has recorded andstored thereon instructions that, when executed, perform the actions ofobtaining an input to a keyboard, where the keyboard includes aplurality of separately movable keys and the keyboard is configured tofunction as both a keyboard and a trackpad, determining a context of thekeyboard input and characterizing the keyboard input as one of a typinggesture, a click gesture or a tracking gesture.

Implementations may include one or more of the following features. Forexample the instructions that, when executed, perform the action ofdetermining the context of the keyboard input may include instructionsthat, when executed, perform the action of determining whether thekeyboard input included input to one or more than one key. Theinstructions that, when executed, perform the action of determining thecontext of the keyboard input may include instructions that, whenexecuted, perform the action of determining whether the keyboard inputwas a tapping movement or a sliding movement. The instructions that,when executed, perform the action of determining whether the keyboardinput was a tapping movement or a sliding movement may includeinstructions that, when executed, perform the action of determiningwhether the tapping movement was a typing gesture or a click gesture.The instructions that, when executed, perform the action of determiningthe context of the keyboard input may include instructions that, whenexecuted, perform the action of determining whether the keyboard inputactivated a sensor in one of the separately movable keys. Theinstructions that, when executed, perform the action of determining thecontext of the keyboard input may include instructions that, whenexecuted, perform the action of determining an application context ofthe keyboard input. The instructions that, when executed, perform theaction of determining the context of the keyboard input may includeinstructions that, when executed, perform the action of determining atext entry context of the keyboard input. The instructions that, whenexecuted, perform the action of determining the context of the keyboardinput may include instructions that, when executed, perform the actionof determining a duration of the keyboard input.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is an exemplary block diagram of a system for acquiring userinput for a computing device by means of a keyboard whose surface isconfigured to function as both a keyboard and a trackpad.

FIG. 1B is an exemplary block diagram illustrating a detailed view of anexemplary implementation of the system of FIG. 1A.

FIG. 2A and FIG. 2B are exemplary block diagrams illustrating exemplaryimplementations of the system of FIG. 1A.

FIG. 2C is an exemplary block diagram illustrating an exemplaryimplementation of the system of FIG. 2B.

FIGS. 3A-3D are exemplary block diagrams of exemplary implementations ofthe system of FIG. 1A.

FIG. 4A is a flowchart illustrating example operations of the system ofFIG. 1A.

FIG. 4B is a flowchart illustrating example operations of the system ofFIG. 1A, specifically an exemplary embodiment of the process shown inFIG. 4A.

FIG. 5 depicts an example of a computer device and a mobile computerdevice that can be configured to implement the system and techniquesdescribed here.

DETAILED DESCRIPTION

FIG. 1A is a block diagram of a system 100 for acquiring user input fora computing device by means of a keyboard 102, the surface of which isconfigured to function as both a trackpad surface 104 and a keyboard102. In FIG. 1A, the system 100 integrates the trackpad surface 104 withthe keyboard 102, such that one or more of the keys or all keys can alsofunction as a trackpad. Merging the keyboard and trackpad into a singlearea is space-efficient, and moreover saves effort on the part of theuser by, for example, obviating the need to physically move between thekeyboard and the trackpad.

The system 100 includes a keyboard 102. In one exemplary implementation,the keyboard 102 includes multiple, separately movable keys. Thekeyboard 102 may be used, for example, to enter text or characters inthe context of a software application. For example, the keyboard 102 maybe used to type words in a document in a word processing application.

The keyboard 102 includes a trackpad surface 104. The trackpad surface104 may be configured to perform trackpad functions including, forexample, controlling movement of a cursor on a display 110. For example,the trackpad surface 104 may be configured to scroll the cursor betweenicons on the display and to select an icon corresponding to a desiredapplication. As a further example, once the cursor is positioned asdesired by the user, the trackpad surface 104 may be used to click onicons or file names depicted on the display 110.

Because of its trackpad surface 104, the keyboard 102 may be configured,for example, both as a trackpad and as a keyboard. For example, a usermay utilize the entire trackpad surface 104 for inputting differenttypes of gestures. The different types of gestures may includes gesturesthat are in an X, Y and Z axis, including combinations of gestures whichmay be in multiple axis. The different types of gestures may include,for example, a typing gesture, a click gesture, and a tracking gestureusing one or more fingertips. A typing gesture includes gestures inputin a Z axis direction (e.g., into the keyboard 102), which are intendedby the user to input a keystroke into the system 100 using a selectedkey on the keyboard 102. A click gesture includes gestures input in a Zaxis direction (e.g., into the trackpad surface 104), which are intendedby the user to input a selection input (e.g., a selection of an objector objects, copying, pasting, tapping, cutting and other click typefunctions) instead of a keystroke. A tracking gesture includes gesturesinput in the X axis and the Y axis and are intended by the user foractions such as, for example, cursor movement, sliding movement, anddragging movement. The entire keyboard 102 may function to receive anyof these different types of gestures.

In the system depicted in FIG. 1A, the keyboard 102 and its trackpadsurface 104 are connected to a central processing unit (CPU) 103 and toa memory 105. The CPU 103 may include one or more processors and may beconfigured to arbitrate and characterize the inputs into the keyboard102. While the CPU 103 is illustrated as a single unit, the CPU 103 mayinclude other more specific processing units including, for example, akeyboard processor module (not shown) and a trackpad processor module(not shown). The CPU 103 may be configured to perform system management,software program execution and to provide interfaces between systemcomponents.

The memory 105 may be configured to store instructions for execution bythe processor 103, including operating system instructions, firmware andother instructions relating to the functioning of the keyboard 102having a trackpad surface 104. In one exemplary implementation, thememory 105 also may be configured to function as a buffer to storeinformation including past history related to input gestures.

In one exemplary implementation, the CPU 103 may be configured toreceive gesture inputs including, for example, typing gestures 106,click gestures 107 and tracking gestures 108, as described above. TheCPU 103 is configured to determine a context of the inputs to thekeyboard 102 and to characterize the inputs as a typing gesture, a clickgesture or a tracking gesture. The CPU 103 may function as an arbiter todetermine the type of input and how to process the input.

In one exemplary implementation, the CPU 103 may interpret the inputfrom the trackpad surface 104 to determine, for example, whether a giveninput should be classified as a typing gesture 106 (e.g., a keystroke)or a tracking gesture 108 (e.g., a trackpad input to move a cursor onthe display 110). For example, a user striking an individual key regionof the keyboard's 102 trackpad surface 104 with a fingertip might intendfor the strike to be interpreted as a keystroke, or instead as a tap onthe trackpad surface 104. In this implementation, the CPU 103 mayinterpret the input according to, for example, the computing context inwhich the user is operating, the force of the input over time, thehistory of how similar inputs have been characterized or corrected bythe user, or characteristics of the user's input gesture, or by othermeans. Further, in this implementation, the CPU 103 may, for example,interpret a series of keystrokes input by the user, recognize thecharacters corresponding to the keys pressed, and transmit this stringof characters to the display 110.

In another example, the user tapping an individual key region of thekeyboard's 102 trackpad surface 104 with a fingertip might intend forthe strike to be interpreted as a click gesture 107. In this example,the CPU 103 may interpret the input according to, for example, thecomputing context in which the user is operating, the force of the inputover time, the history of how similar inputs have been characterized orcorrected by the user, or characteristics of the user's input gesture,or by other means. In this example, the CPU 103 may process the gestureas a click gesture.

In one exemplary implementation, the CPU also may be configured toignore or reject spurious inputs such as, for example, one or morefingers resting on the trackpad surface 104.

In one exemplary implementation, the CPU 103 may use past history andlearning based on user corrections to characterized gestures todetermine how to characterize an input gesture. For example, a historyof input gestures may be stored in the memory 105. The history mayinclude information such as the key or keys or region into which theinput occurred, the force of the input and whether or not the usercorrected an initial characterization of the input by the CPU 103. Thisinformation, as well as other related information, may be used by theCPU 103 to learn what gesture is intended by the user.

FIG. 1B depicts a cutaway view of a possible implementation of thesystem of FIG. 1A. In this implementation, the keyboard 102 includesmultiple layers, including a key surface 112, a tracking layer 114, anoptional membrane 116, wires 118, and a support 120. In one exemplaryimplementation, the key surface 112 includes separately movable keys.

In the example implementation shown in FIG. 1B, a key surface 112includes the surface of the trackpad surface 104, and is the layer thatthe user touches in order to enter an input to the trackpad surface 104.For example, the user may tap the key surface 112 with a fingertip, orslide one or more fingertips across the key surface 112, or betweenmultiple key surfaces 112 on adjacent keys. In this exampleimplementation, the key surface 112 may be composed of glass, plastic,composite or any other material suitable for a trackpad surface 104.

In the same example implementation shown in FIG. 1B, a tracking layer114 sits beneath the key surface 112, and may include wires 118 to carrysignals corresponding to touch inputs provided by the user. The trackinglayer 114 may be configured, for example, to capture user input appliedto the key surface 112, and to convert the input to one or more signalsto be used by the system (e.g., the CPU 103) in order to record, processand handle user input. Other implementations of the tracking layer 114are possible, such as, for example, a tracking layer 114 not utilizingwires 118, but instead tracking user touch inputs by other means.

Wires 118, if present in the implementation, may be organized in a gridpattern as shown in the example implementation in FIG. 1B, or in anotherpattern suitable for capturing user input on the key surface 112. Forexample, wires 118 may also be oriented in a spiral pattern, atriangular or other regular grid pattern, an irregular grid pattern, oranother pattern. In one exemplary implementation, a pad array or othertype of array may be used.

The membrane 116, if present, may sit between the sensor layer 114 andthe support 120. The membrane may be configured, for example, to cushionthe impact of keystrokes on individual keys, and to act as a channel forwires 118 to run along the base of the keyboard 102. For example, anindividual key may include a key surface 112, and beneath this atracking layer 114, the wires 118 from which run down and are embeddedin the membrane 116, which also serves to cushion keystrokes. Themembrane may be composed of, for example, silicone or rubber.

The support 120, if present, may be a rigid support beneath the keyboard102 upon or around which other layers are arranged. The support may beconfigured to offer structural rigidity to the keyboard 102, or toprovide a resistant surface against which keystrokes can be made.

The system 100 may also include a display 110, which may be configured,for example, to display program information to the user and permit theuser to interact visually with the system 100. For example, the displaymay depict the operating system desktop screen, or an active softwarewindow, to the user.

FIGS. 2A and 2B depict two exemplary implementations of the system ofFIG. 1A. FIG. 2A depicts the keyboard 102 as consisting of a singletrackpad surface 104 partitioned to represent individual keys. In thisexample implementation, the single trackpad surface 104 may beconfigured to function as a keyboard 102, for example, by assigningdifferent regions of the single trackpad surface 104 to correspond toindividual keys on the keyboard 102. For example, a user may typenormally on the single trackpad surface 104, and depending upon whichspecific portion of the trackpad surface 104 was pressed, the typing maybe interpreted as keystrokes corresponding to the applicable keyassigned to each region of the trackpad surface 104 with which the usermakes contact. For example, a user may type on a single trackpadsurface, and have the input be recognized as a string of characters asthough the user were typing on independent keys on a keyboard.

In this implementation, although the keyboard 102 is composed of asingle sheet of trackpad surface 104, it may nonetheless include, forexample, representations of regions corresponding to different keys, andthe corresponding regions of the trackpad surface 104 may be mapped tocorrespond to the keys as indicated. For example, a user typing on thissingle trackpad surface 104 may see representations of individual keyson the trackpad surface (for example, Q, W, E, R, T, Y) and find hiskeystrokes recorded as though he were typing on a traditional keyboardwith independent keys.

The representations of keys on the trackpad surface may be visual (forexample, painted, projected, displayed or otherwise visuallyascertainable depictions), tactile, or communicated to the user by othermeans.

FIG. 2B depicts the keyboard 102 as consisting of separate individualkeys 200. In this example implementation, the keyboard 102 is comprisedof separately, movable individual keys 200, each of which can be pressedor activated independently. The separate individual keys may beconfigured, for example, to activate only one key at a time, for exampleif a user presses the key marked “B”, the keyboard may mechanically orelectronically register the keystroke corresponding to the “B” key.

The separate individual keys 200 may be arranged so as to be flush withone another. For example, the keys may be arranged adjacent to oneanother so as to minimize the gap between them and to provide anear-uniform surface when, for example, a user slides his finger acrossthe surface of adjacent keys. For example, the keys 200 may be arrangedto

FIG. 2C depicts an example implementation of the system of FIG. 2B,specifically depicting the structure of an individual key in thekeyboard. In the example implementation shown in FIG. 2C, eachindividual key 200 includes a key surface 112. The key surface 112includes the surface of the individual key 200, and is the layer thatthe user touches in order to enter an input to the portion of thetrackpad surface 104 represented by this individual key 200. Forexample, the user may tap the key surface 112 with a fingertip, or slideone or more fingertips across the key surface 112, or between multiplekey surfaces 112 on adjacent keys 200. In this example implementation,the key surface 112 may be composed of glass, plastic, composite or anyother material suitable for a trackpad surface 104.

In the example implementation shown in FIG. 2C, each individual key 200may include a tracking layer 114. Because in the system 100, thetrackpad surface 104 extends over part or all of the keyboard 102, aplurality of individual keys or all individual keys may include distincttracking layers 114. The tracking layers 114 on each individual key maybe configured, for example, to track gestures and trackpad input withinthe surface of the individual key 200, or to track gestures and trackpadinput across and between a plurality of individual keys 200. Forexample, a user may slide her finger across the key surface 112 of threeadjacent independent keys 200, thereby triggering the tracking layers114 of the three adjacent keys 200 to track her gesture across all threeindividual keys 200.

Wires 118, if present in the implementation, may be organized in a gridpattern as shown in the example implementation in FIG. 2C, or in anotherpattern suitable for capturing user input on the key surface 112. Forexample, wires 118 may also be oriented in a spiral pattern, atriangular or other regular grid pattern, an irregular grid pattern, oranother pattern.

In the example implementation shown in FIG. 2C, each individual key 200may include a spring assembly 202 and further may include a rubbercushion 206. The spring 202 and cushion 206 may be configured to, forexample, provide tactile resistance when an individual key 200 isdepressed, and to cushion the lower portion of the keystroke. Forexample, for a user typing on the keyboard 102, which in thisimplementation includes individual keys 200, each keystroke would be metwith, for example, spring-like tactile resistance on each key 200, and asoftened keystroke on account of the rubber cushion 206. The springassembly 202 and rubber cushion 206, if present, may be mounted betweenthe tracking layer 114 or the key platform 208, and the support 120.

In the example implementation shown in FIG. 2C, each individual key 200may also include a key platform 208. The key platform 208 may beconfigured to, for example, support or suspend the key surface 112 andtracking layer 114 above the membrane 116 and the support 120.

In the example implementation shown in FIG. 2C, each individual key 200may also include a sensor 204. The sensor 204 may record individualkeystrokes by, for example, sending a signal when the top assembly ofthe individual key 200 is depressed and makes contact with the sensor204. For example, a user typing on individual keys 200 would depresseach key 200 sufficient to bring the upper assembly of the key 200(comprising, in this implementation, the key surface 112, the trackinglayer 114, and the key platform 208) into contact with the lowerassembly of the key 200 (comprising, in this implementation, the rubbercushion 206, the membrane 116, and support 120), sufficient to triggerthe sensor 204 under each key 200. The signal from the sensor 204 undereach key may then transmit a signal corresponding to the appropriatekeystroke, which could be sent, for example, to the CPU 103 or processedby other means.

In one exemplary implementation, the sensor 204 may use tactile sensingin combination with a displacement measurement of a key 200 to generatea signal with the measured amounts for transmission to the CPU 103 todetermine how to characterize the gesture based on the measuredinformation.

In this example implementation, then, the keyboard 102 includes multipleindividual keys 200, where each individual key 200 may be equipped witha functional trackpad surface. Each key 200 can thus be used in severaldistinct ways. First, each key can be used as one would use a mechanicalkey on a traditional keyboard—that is, each can be activated by applyingpressure to depress that individual key, thereby activating the sensorand triggering a typing gesture and the expected correspondingkeystroke. Second, the surface of each key can be used as a smalltrackpad—that is, the user can tap lightly on the key surface withoutdepressing the entire key assembly and triggering a keystroke, or theuser can slide one or more fingertips across the key surface to input atracking gesture or a click gesture instead of a typing gesture. Third,each key can contribute its surface area to a form a larger, virtualtrackpad spanning multiple keys, or all keys on the keyboard.

Therefore, in this example implementation, when an individual key 200 isdepressed sufficient to trigger the sensor 204, the associated keystrokeis registered as a typing gesture. For example, a user typing normallyon the keyboard would depress each individual key 200 sufficient torecord the typing as keystrokes.

In this or other implementations, a keystroke or typing gesture may alsobe registered when an individual key 200 is tapped but not depressedsufficient to trigger the sensor 204, dependent on the context of theinput. For example, a user typing lightly on the keys with insufficientforce to depress any individual key sufficient to trigger its sensor maynonetheless register keystrokes for every key touched.

However, the surface of the individual keys also combines to generate avirtual trackpad surface 104 spanning some or all of the keyboard 102,and thereby permitting a user to employ the surface of the various keysas a single virtual trackpad surface 104 and to input click gestures andtracking gestures.

In one exemplary implementation, the sensor 204 may include a forcesensor. The force sensor may detect and use an amount of force exertedby the user to generate a signal to provide as input to the CPU 103 ofFIG. 1 such that the CPU 103 may characterize the input as either atyping gesture or a click gesture. In another exemplary implementation,force or pressure history may be used to distinguish between clickgestures and typing gestures. A measure of the force over a period oftime, as measured by the force sensor and stored in the memory 105, maybe used to distinguish click gestures from typing gestures. For example,an input that merely touched an individual key 200 without meeting athreshold pressure or force level may be considered a click gesture. Onthe other hand, an input on an individual key 200 that met and/orexceeded a threshold pressure or force level may be considered a typinggesture.

FIGS. 3A-3D depict exemplary implementations of the system of FIG. 1A.

FIG. 3A depicts the system of FIG. 1A implemented in a portablecomputer, wherein the display 110, the CPU 103 and the memory 105 areall included within the portable device housing, along with the keyboard102 with its trackpad surface 104. The dotted line 302 illustrates thespace saved on the device by not needing a separate trackpad adjacent tothe keyboard.

FIG. 3B depicts the system of FIG. 1A implemented in a desktop computer,wherein the display 110, the CPU 103 and the memory 105 are includedwithin the desktop computer, and the keyboard 102 with its trackpadsurface 104 is connected as an external peripheral. This connection maybe wired (for example, with a USB or similar cable) or wireless (forexample, with wireless radio, WiFi, infrared, Bluetooth or a similarconnection). Note that the system does not require an external mouse ortrackpad, because the trackpad functionality is integrated with thekeyboard.

FIG. 3C depicts the system of FIG. 1A implemented by means of a trackinglayer 114 underneath the key surface 112 of the keyboard 102 andtrackpad surface 104. In this implementation, which has been previouslydescribed and is also illustrated in FIG. 1A, user input on the trackpadsurface 104 is tracked—either across the entire trackpad surface 104, oracross each individual key surface 112—by means of a tracking layer 114at or below the surface. This implementation of the system of FIG. 1Amay be configured to track user input to and across the keys, by meansof registering gesture, including typing gestures, click gestures andtracking gestures made while in contact with the trackpad surface 104 orany individual key surface 112. For example, a user may slide her fingergently across the surface of a key, and this motion is registered by thetracking layer 114.

By comparison, FIG. 3D depicts the system of FIG. 1A implemented bymeans of a plurality of light beams 306 and a plurality of sensorsarranged in a sensor array 304. The light beams and sensor array may beconfigured, for example, to track the location or movement of a user'shand or fingers on or near the keyboard's 102 trackpad surface 104. Forexample, a user may slide her finger gently across the surface of a keyand this motion is registered by the light beams 306 and sensor array304.

FIG. 4A depicts a flowchart of a process 400, illustrating exampleoperations of the system of FIG. 1A. This process 400 is an exampleembodiment of a process to handle user input to the combined keyboard102 and trackpad surface 104.

Process 400 includes obtains input to the combined keyboard 102 andtrackpad surface 104, where the keyboard includes multiple, separatelymovable keys (401), determining the context of the keyboard input (403)and characterizing the keyboard input as a typing gesture, a clickgesture or a tracking gesture (405). Process 400 is described in moredetail below with respect to FIG. 4B.

FIG. 4B depicts a flowchart of an exemplary embodiment of the process450, illustrating example operations of the system of FIG. 1A.

At step 402, the user of the system of FIG. 1A generates input on thecombined keyboard 102 and trackpad surface 104. This input may beprovided in the form of touching, tapping, pressing or other inputs tothe surface of the keyboard 102 or trackpad surface 104 with afingertip, or sliding one or more fingertips across the surface of thetrackpad surface 104. For example, the user may tap the trackpad surface104.

The process splits 404 according to whether the keyboard has individualkeys. If, as depicted in FIG. 2B, the keyboard 102 has individual keys200 with sensors 204, the process 450 determines 406 whether the inputtriggered a sensor 204 under an individual key 200. If the process 450determines that the input did indeed trigger a sensor 204 under anindividual key 200, the process 450 terminates 416 by registering theinput as a typing gesture and sending the appropriate keystrokecorresponding to the key 200 associated with the sensor 204 thatregistered the contact.

For example, a user typing on a keyboard with individual keys maystrike, for example, the “A” key. By depressing this key sufficient totrigger its underlying sensor, the process 450 records the input as atyping gesture as a press of the “A” key and transmits this character onto the CPU 103 or other processor. In some exemplary implementations,the sensor may make the input characterization determination instead ofthe CPU 103.

If, on the other hand, the keyboard does not have individual keys200—for example, if the keyboard is instead as depicted in FIG. 2A,namely a single surface with representations of individual keys—or, ifat step 406 it is determined that a sensor was not activated, then theprocess 450 next determines 408 whether the input is localized to onediscrete location on the trackpad surface 104, or whether it is asliding or dragging input or otherwise occupies a larger area.

If the input is localized to a single spot, the process at step 412determines whether the input occurs in a typing context. For example, auser who supplies the aforementioned input 402 to the trackpad surface104 while typing a sentence in a word processing program may beoperating in a typing context.

If the input occurs in a typing context, the process 450 terminates 416by sending the appropriate keystroke associated with the key or regionthat registered the contact.

If, on the other hand, the input 402 is not in a typing context, or if,at step 410, the input is not localized to one spot, the process 450terminates 414 by processing the input 402 as a tracking gesture or aclick gesture.

Some simple cases will assist in illustrating the operation of thisprocess 450.

In the first case, assume the system of FIG. 1A is implemented as shownin FIG. 2B, namely, with independent keys 200 each having a sensor 204as well as a tracking layer 114 under the key surface 112. Furtherassume that a user places her fingertip gently on the surface of “F”key, and without depressing the F key or any other, slides her fingergently to the right, crossing the “G” and “H” keys before stopping atthe “J” key.

In handling this first case, the process 450 would determine that thekeyboard was arranged with independent keys 200 and sensors 204 undereach, per step 404. However, at step 406 it would determine that nosensor had been triggered, and thus step 408 would determine whether theinput was localized to one spot, or sliding. Since this input issliding, involving four adjacent key surfaces, step 410 determines thatmultiple keys are involved. The process terminates 414 by returning thegesture as a tracking gesture. In this case, then, the user would haveinput a gesture equivalent to sliding her finger to the right on atraditional trackpad.

In the second case, assume the system of FIG. 1A is implemented as shownin FIG. 2A, namely, with a single trackpad surface 104. Further assumethat a user, operating in a word processing program and following astring of text entry wherein she typed “PATEN”, taps gently on thesurface of “T” key and then removes her finger.

In handling this second case, the process 450 would determine that thekeyboard was arranged a single trackpad surface 104 as opposed toindependent keys, per step 404. Step 408 would determine that the inputwas localized to one spot, as opposed to sliding. Step 412 examines thecontext of the localized input. Here, the input occurred in a typingcontext (for example, because the localized tap followed a string oftext entry, in a word processing program), and as such the processterminates 416 by returning the input as a typing gesture, namely akeystroke to the “T” key. In this case, then, the user would have inputa gesture equivalent to depressing the “T” key on a traditionalkeyboard.

FIG. 5 shows an example of a generic computer device 500 and a genericmobile computer device 550, which may be used with the techniquesdescribed here. Computing device 500 is intended to represent variousforms of digital computers, such as laptops, desktops, workstations,personal digital assistants, servers, blade servers, mainframes, andother appropriate computers. Computing device 550 is intended torepresent various forms of mobile devices, such as personal digitalassistants, cellular telephones, smart phones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

Computing device 500 includes a processor 502, memory 504, a storagedevice 506, a high-speed interface 508 connecting to memory 504 andhigh-speed expansion ports 510, and a low speed interface 512 connectingto low speed bus 514 and storage device 506. Each of the components 502,504, 506, 508, 510, and 512, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 502 can process instructions for executionwithin the computing device 500, including instructions stored in thememory 504 or on the storage device 506 to display graphical informationfor a GUI on an external input/output device, such as display 516coupled to high speed interface 508. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices500 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 504 stores information within the computing device 500. Inone implementation, the memory 504 is a volatile memory unit or units.In another implementation, the memory 504 is a non-volatile memory unitor units. The memory 504 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 506 is capable of providing mass storage for thecomputing device 500. In one implementation, the storage device 506 maybe or include a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also includeinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 504, the storage device 506,or memory on processor 502.

The high speed controller 508 manages bandwidth-intensive operations forthe computing device 500, while the low speed controller 512 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 508 iscoupled to memory 504, display 516 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 510, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 512 is coupled to storage device 506 and low-speed expansionport 514. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 500 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 520, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 524. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 522. Alternatively, components from computing device 500 may becombined with other components in a mobile device (not shown), such asdevice 550. Each of such devices may include one or more of computingdevice 500, 550, and an entire system may be made up of multiplecomputing devices 500, 550 communicating with each other.

Computing device 550 includes a processor 552, memory 564, aninput/output device such as a display 554, a communication interface566, and a transceiver 568, among other components. The device 550 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 550, 552,564, 554, 566, and 568, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 552 can execute instructions within the computing device550, including instructions stored in the memory 564. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. The processor may provide, for example,for coordination of the other components of the device 550, such ascontrol of user interfaces, applications run by device 550, and wirelesscommunication by device 550.

Processor 552 may communicate with a user through control interface 558and display interface 556 coupled to a display 554. The display 554 maybe, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display)or an OLED (Organic Light Emitting Diode) display, or other appropriatedisplay technology. The display interface 556 may comprise appropriatecircuitry for driving the display 554 to present graphical and otherinformation to a user. The control interface 558 may receive commandsfrom a user and convert them for submission to the processor 552. Inaddition, an external interface 562 may be provide in communication withprocessor 552, so as to enable near area communication of device 550with other devices. External interface 562 may provide, for example, forwired communication in some implementations, or for wirelesscommunication in other implementations, and multiple interfaces may alsobe used.

The memory 564 stores information within the computing device 550. Thememory 564 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 574 may also be provided andconnected to device 550 through expansion interface 572, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 574 may provide extra storage space fordevice 550, or may also store applications or other information fordevice 550. Specifically, expansion memory 574 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 574may be provide as a security module for device 550, and may beprogrammed with instructions that permit secure use of device 550. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct includes instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 564, expansionmemory 574, or memory on processor 552, that may be received, forexample, over transceiver 568 or external interface 562.

Device 550 may communicate wirelessly through communication interface566, which may include digital signal processing circuitry wherenecessary. Communication interface 566 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 568. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 570 mayprovide additional navigation- and location-related wireless data todevice 550, which may be used as appropriate by applications running ondevice 550.

Device 550 may also communicate audibly using audio codec 560, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 560 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 550. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 550.

The computing device 550 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 580. It may also be implemented as part of a smartphone 582, personal digital assistant, or other similar mobile device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the invention.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

Implementations of the various techniques described herein may beimplemented in digital electronic circuitry, or in computer hardware,firmware, software, or in combinations of them. Implementations mayimplemented as a computer program product, i.e., a computer programtangibly embodied in an information carrier, e.g., in a machine-readablestorage device or in a propagated signal, for execution by, or tocontrol the operation of, data processing apparatus, e.g., aprogrammable processor, a computer, or multiple computers. A computerprogram, such as the computer program(s) described above, can be writtenin any form of programming language, including compiled or interpretedlanguages, and can be deployed in any form, including as a stand-aloneprogram or as a module, component, subroutine, or other unit suitablefor use in a computing environment. A computer program can be deployedto be executed on one computer or on multiple computers at one site ordistributed across multiple sites and interconnected by a communicationnetwork.

Method steps may be performed by one or more programmable processorsexecuting a computer program to perform functions by operating on inputdata and generating output. Method steps also may be performed by, andan apparatus may be implemented as, special purpose logic circuitry,e.g., an FPGA (field programmable gate array) or an ASIC(application-specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read-only memory ora random access memory or both. Elements of a computer may include atleast one processor for executing instructions and one or more memorydevices for storing instructions and data. Generally, a computer alsomay include, or be operatively coupled to receive data from or transferdata to, or both, one or more mass storage devices for storing data,e.g., magnetic, magneto-optical disks, or optical disks. Informationcarriers suitable for embodying computer program instructions and datainclude all forms of non-volatile memory, including by way of examplesemiconductor memory devices, e.g., EPROM, EEPROM, and flash memorydevices; magnetic disks, e.g., internal hard disks or removable disks;magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor andthe memory may be supplemented by, or incorporated in special purposelogic circuitry.

To provide for interaction with a user, implementations may beimplemented on a computer having a display device, e.g., a cathode raytube (CRT) or liquid crystal display (LCD) monitor, for displayinginformation to the user and a keyboard and a pointing device, e.g., atrackpad or a mouse or a trackball, by which the user can provide inputto the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback, e.g., visual feedback,auditory feedback, or tactile feedback; and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

Implementations may be implemented in a computing system that includes aback-end component, e.g., as a data server, or that includes amiddleware component, e.g., an application server, or that includes afront-end component, e.g., a client computer having a graphical userinterface or a Web browser through which a user can interact with animplementation, or any combination of such back-end, middleware, orfront-end components. Components may be interconnected by any form ormedium of digital data communication, e.g., a communication network.Examples of communication networks include a local area network (LAN)and a wide area network (WAN), e.g., the Internet.

While certain features of the described implementations have beenillustrated as described herein, many modifications, substitutions,changes and equivalents will now occur to those skilled in the art. Itis, therefore, to be understood that the appended claims are intended tocover all such modifications and changes as fall within the true spiritof the embodiments of the invention.

What is claimed is:
 1. An apparatus, comprising: a processor; and akeyboard comprising a plurality of separately moveable keys, thekeyboard being configured to function as both a keyboard and a trackpad,wherein each of the separately moveable keys comprises: a key surface, atracking layer disposed beneath the key surface, the tracking layercomprising a capacitive surface, a keystroke sensor for each of theseparately moveable keys disposed beneath the tracking layer, and asupport layer disposed beneath the keystroke sensor and the trackinglayer; wherein the processor is configured to characterize and processtyping gestures, click gestures and tracking gestures, wherein the clickgestures include click-type functions, and the processor is configuredto: determine if a keyboard input activates one of the keystroke sensorson one of the separately moveable keys, responsive to determining akeystroke sensor activation, register a typing gesture for a keyassociated with the activated keystroke sensor, responsive todetermining no keystroke sensor activation, determine if the keyboardinput is a gesture over multiple keys or a gesture on a single key, andresponsive to determining if the keyboard input is a gesture overmultiple keys or a gesture on a single key, characterize and process thekeyboard input as one of a typing gesture, a click gesture or a trackinggesture.
 2. The apparatus of claim 1 wherein: the processor isconfigured to determine a software application context of the keyboardinput and process the keyboard input as a typing gesture in response todetermining the gesture is on a single key and the software applicationcontext is in a typing context.
 3. The apparatus of claim 1 wherein: theprocessor is configured to determine a software application context ofthe keyboard input and process the keyboard input as a click gesture ora tracking gesture in response to determining the gesture is on a singlekey and the software application context is not in a typing context. 4.The apparatus of claim 3 wherein the processor is configured to processthe keyboard input as a tracking gesture on the single key.
 5. Theapparatus of claim 1 wherein: the keyboard further comprises a separatesensor array configured to detect touch gestures made on or near asurface of the keyboard; and the processor is configured to process thetouch gestures detected by the separate sensor array into one or moreactions.
 6. The apparatus of claim 5 wherein: the processor is furtherconfigured to classify the touch gestures between a typing gesture, aclick gesture and a tracking gesture in response to detecting the touchgestures by the separate sensor array.
 7. The apparatus of claim 1wherein the separately moveable keys are individual keys.
 8. Theapparatus of claim 7 wherein the individual keys are arranged such thateach of the keys is an approximately planar surface arranged together tocover a substantial portion of a key support.
 9. The apparatus of claim1 further comprising a spring mechanism for each separately movable key.10. The apparatus of claim 1 wherein the keystroke sensor includes aforce sensor for each separately movable key.
 11. The apparatus of claim1, further comprising a memory, wherein: the processor is configured to:store a history of keyboard inputs and corresponding user corrections tocharacterized gestures of the keyboard inputs in the memory, andcharacterize and process new keyboard inputs as one of a typing gesture,a click gesture or a tracking gesture based on the history of the storedkeyboard inputs and corresponding user corrections.
 12. A methodincluding executing instructions recorded on a non-transitorycomputer-readable storage media using at least one processor, the methodcomprising: obtaining an input to a keyboard, the keyboard comprising aplurality of separately movable keys, the keyboard being configured tofunction as both a keyboard and a trackpad; determining if a keyboardinput activates a keystroke sensor on one of the separately moveablekeys; responsive to determining a keystroke sensor activation,registering a typing gesture for a key associated with the activatedkeystroke sensor; responsive to determining no keystroke sensoractivation, determining if the keyboard input is a gesture over multiplekeys or a gesture on a single key; responsive to determining if thekeyboard input is a gesture over multiple keys or a gesture on a singlekey, characterizing and processing the keyboard input as one of a typinggesture, a click gesture or a tracking gesture; storing a history ofkeyboard inputs and corresponding user corrections to characterizedgestures of the keyboard inputs in a memory; and characterizing andprocessing new keyboard inputs as one of a typing gesture, a clickgesture or a tracking gesture based on the history of the storedkeyboard inputs and corresponding user corrections.
 13. The method ofclaim 12, further comprising determining a software application contextof the keyboard input and wherein characterizing and processing thekeyboard input includes processing the keyboard input as a typinggesture in response to determining the gesture is on a single key andthe software application context is in a typing context.
 14. The methodof claim 12, further comprising determining a software applicationcontext of the keyboard input and wherein characterizing and processingthe keyboard input includes processing the keyboard input as a clickgesture or a tracking gesture in response to determining the gesture ison a single key and the software application context is not in a typingcontext.
 15. The method of claim 14, wherein processing the keyboardinput includes processing the keyboard input as a tracking gesture onthe single key.
 16. The method of claim 12, wherein characterizing andprocessing the keyboard input includes processing the keyboard input asa click gesture or a tracking gesture in response to determining thegesture is over multiple keys.
 17. A non-transitory computer-readablestorage medium having recorded and stored thereon instructions that,when executed, perform the actions of: obtaining an input to a keyboard,the keyboard comprising a plurality of separately movable keys, thekeyboard being configured to function as both a keyboard and a trackpad;determining if a keyboard input activates a keystroke sensor on one ofthe separately moveable keys; responsive to determining a keystrokesensor activation, registering a typing gesture for a key associatedwith the activated keystroke sensor; responsive to determining nokeystroke sensor activation, determining if the keyboard input is agesture over multiple keys or a gesture on a single key; responsive todetermining if the keyboard input is a gesture over multiple keys or agesture on a single key, characterizing and processing the keyboardinput as one of a typing gesture, a click gesture or a tracking gesture;storing a history of keyboard inputs and corresponding user correctionsto characterized gestures of the keyboard inputs in a memory; andcharacterizing and processing new keyboard inputs as one of a typinggesture, a click gesture or a tracking gesture based on the history ofthe stored keyboard inputs and corresponding user corrections.
 18. Thenon-transitory computer-readable storage medium of claim 17 furthercomprising instructions that, when executed, perform the action ofdetermining a software application context of the keyboard input andwherein the instructions that, when executed, perform the action ofcharacterizing and processing the keyboard input include instructionsthat, when executed, perform the action of processing the keyboard inputas a typing gesture in response to determining the gesture is on asingle key and the software application context is in a typing context.19. The non-transitory computer-readable storage medium of claim 17further comprising instructions that, when executed, perform the actionof determining a software application context of the keyboard input andwherein the instructions that, when executed, perform the action ofcharacterizing and processing the keyboard input include instructionsthat, when executed, perform the action of processing the keyboard inputas a click gesture or a tracking gesture in response to determining thegesture is on a single key and the software application context is notin a typing context.
 20. The non-transitory computer-readable storagemedium of claim 19, wherein the instructions that, when executed,perform the action of processing the keyboard input include instructionsthat, when executed, perform the action of processing the keyboard inputas a tracking gesture on the single key.
 21. The non-transitorycomputer-readable storage medium of claim 17 wherein the instructionsthat, when executed, perform the action of characterizing and processingthe keyboard input include instructions that, when executed, perform theaction of processing the keyboard input as a click gesture or a trackinggesture in response to determining the gesture is over multiple keys.